package testPackage;

import org.testng.Assert;
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
import org.testng.annotations.Test;

/**
 * step by step 04 在TestNG中重新运行失败的测试
 * 实现方法（两种）：
 * 1、使用testng-faile.xml
 * 使用时间：修复一些错误后，仅运行失败的测试
 * 实现：运行testng-failed.xml文件
 * 2、实现TestNG IRetryAnalyzer
 * 使用时间：执行报告中出现一些不是由于应用程序中的问题引起的失败，
 * 根本原因可能与测试环境设置或服务器问题有关。需重新运行测试失败
 * 案例，消除测试报告中的假阴性测试结果。
 * 实现：实现IRetryAnalyzer接口，提供控制重试测试运行的方法。
 */
public class Testng04 implements IRetryAnalyzer {
    //重新测试次数计数
    int retryAttemptsCounter = 0;
    //限制的最多执行次数
    int manRetryLimit = 1;
    public boolean retry(ITestResult iTestResult) {
        if (!iTestResult.isSuccess()) {
            if (retryAttemptsCounter < manRetryLimit) {
                retryAttemptsCounter++;
                return true;
            }
        }
        return false;
    }
    @org.testng.annotations.Test(retryAnalyzer = Testng04.class)
    public void intentionallyFailingTest(){
        System.out.println("Executing Test");
        Assert.fail("Failing Test");
    }
}


